/**
 * 
 */
package good_src.tests;

import good_src.Implementation.ConcreteCapteur;
import good_src.Interfaces.Algorithme;
import good_src.Interfaces.Capteur;
import good_src.Strategy.Atomique;
import junit.framework.TestCase;

/**
 * @author Tangi Midy & Fabien Le Peih
 *
 */
public class TestCapteur extends TestCase {

	
	private Algorithme algo;
	private Capteur<Integer> capteur;
	
	/**
	 * @param name
	 */
	public TestCapteur(String name) {
		super(name);
	}

	/**
	 * @see junit.framework.TestCase#setUp()
	 */
	protected void setUp() throws Exception {
		super.setUp();
		capteur = new ConcreteCapteur();
		algo =  new Atomique(this.capteur);
	}

	/**
	 * Test method for {@link good_src.Implementation.ConcreteCapteur#setStrategy(good_src.Interfaces.Algorithme)}.
	 */
	public void testSetStrategy() {
		this.capteur.setStrategy(algo);
		assertTrue(this.capteur.getStrategy()!=null);
	}

	/**
	 * Test method for {@link good_src.Implementation.ConcreteCapteur#tick()}.
	 */
	public void testTick() {
		assertTrue(this.capteur.getValue()==0);
		this.capteur.tick();
		assertTrue(this.capteur.getValue()==1);		
	}

	/**
	 * Test method for {@link good_src.Implementation.ConcreteCapteur#getStrategy()}.
	 */
	public void testGetStrategy() {
		this.capteur.setStrategy(algo);
		assertTrue(this.capteur.getStrategy()!=null);
	}

	/**
	 * Test method for {@link good_src.Implementation.ConcreteCapteur#getValue()}.
	 */
	public void testGetValue() {
		assertTrue(this.capteur.getValue()==0);
		this.capteur.tick();
		assertTrue(this.capteur.getValue()==1);	
	}

	/**
	 * Test method for {@link good_src.Implementation.ConcreteCapteur#isTicking()}.
	 */
	public void testIsTicking() {
		assertTrue(this.capteur.isTicking());
		this.capteur.setTick(false);
		assertFalse(this.capteur.isTicking());	
	}

	/**
	 * Test method for {@link good_src.Implementation.ConcreteCapteur#setTick(boolean)}.
	 */
	public void testSetTick() {
		assertTrue(this.capteur.isTicking());
		this.capteur.setTick(false);
		assertFalse(this.capteur.isTicking());	
	}

}
